
// 功能：和后端交互（封装ajax）
// 参数：
//   method：  请求方式
//   url：请求地址
//   params：请求参数 （key1=value1&key2=value2）
//   callback：回调函数（后端响应回来后所做的处理）
//   isAsync：是否异步
// 返回值：
function ajax2110(method,url,params,callback,isAsync){
    // 1、创建XMLHttpRequest对象
    let xhr = new XMLHttpRequest();

    // 2、设置请求相关信息
    let urlAndParams = url;
    if(method.toLowerCase()=="get"){
        urlAndParams += "?"+params
    }

    xhr.open(method,urlAndParams,isAsync);

    // 3、设置回调函数（后端响应时，调用的函数）
    xhr.onreadystatechange = function(){
        if(xhr.readyState==4 && xhr.status==200){

            callback(xhr.responseText);

        }
    }

    if(method.toLowerCase()=="get"){
        // 4、发送请求
        xhr.send();
    }else if(method.toLowerCase()=="post"){
        // 如果是post方式，必须设置请求头。
        xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        xhr.send(params);
    }

}

// ajax2110UseObj({
//     method:"get",
//     url:"checkUse.php",
//     params:"username=wcx",
//     callback:function(result){},
//      isAsync:true
// });

// ajax2110UseObj({
//     url:"checkUse.php",
//     params:"username=wcx",
//     callback:function(result){}
// });

function ajax2110UseObj(obj){

let defaultObj = {
    method:"get",
    url:"#",
    params:"",
    callback:null,
    isAsync:true
}

for(let key in defaultObj){
    // 把obj里没有传入的属性使用defaultObj的对应属性。
    if(obj[key]==undefined){
        obj[key]=defaultObj[key];
    }
}

// 1、创建XMLHttpRequest对象
let xhr = new XMLHttpRequest();

// 2、设置请求相关信息
let urlAndParams = obj.url;
if(obj.method.toLowerCase()=="get"){
    urlAndParams += "?"+obj.params
}

xhr.open(obj.method,urlAndParams,obj.isAsync);

// 3、设置回调函数（后端响应时，调用的函数）
xhr.onreadystatechange = function(){
    if(xhr.readyState==4 && xhr.status==200){            
        obj.callback && obj.callback(xhr.responseText);
    }
}

if(obj.method.toLowerCase()=="get"){
    // 4、发送请求
    xhr.send();
}else if(obj.method.toLowerCase()=="post"){
    // 如果是post方式，必须设置请求头。
    xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xhr.send(obj.params);
}

}

